其他
使用 GPU.js 改善JavaScript性能
什么是GPU.js?
为什么要使用GPU.js
GPU可用于执行大规模并行GPGPU计算。这是需要异步完成的计算类型 当系统中没有GPU时,它会优雅地退回到JavaScript GPU当前在浏览器和Node.js上运行,非常适合通过大量计算来加速网站 GPU.js是在考虑JavaScript的情况下构建的,因此这些功能均使用合法的JavaScript语法
如你所见,GPU比CPU快22.97倍。
GPU.js的工作方式
gpu.createKernel
方法创建了一个从JavaScript函数移植过来的GPU加速内核。GPU.js入门
sudo apt install mesa-common-dev libxi-dev // using Linux
npm
npm install gpu.js --save
// OR
yarn add gpu.js
在你的Node项目中要导入GPU.js。
import { GPU } from ('gpu.js')
// OR
const { GPU } = require('gpu.js')
const gpu = new GPU();
乘法演示
在下面的示例中,计算是在GPU上并行完成的。
首先,生成大量数据。
const getArrayValues = () => {
// 在此处创建2D arrary
const values = [[], []]
// 将值插入第一个数组
for (let y = 0; y < 600; y++){
values[0].push([])
values[1].push([])
// 将值插入第二个数组
for (let x = 0; x < 600; x++){
values\[0\][y].push(Math.random())
values\[1\][y].push(Math.random())
}
}
// 返回填充数组
return values
}
创建内核(运行在GPU上的函数的另一个词)。
const gpu = new GPU();
// 使用 `createKernel()` 方法将数组相乘
const multiplyLargeValues = gpu.createKernel(function(a, b) {
let sum = 0;
for (let i = 0; i < 600; i++) {
sum += a\[this.thread.y\][i] * b\[i\][this.thread.x];
}
return sum;
}).setOutput([600, 600])
使用矩阵作为参数调用内核。
const largeArray = getArrayValues()
const out = multiplyLargeValues(largeArray[0], largeArray[1])
输出
console.log(out\[y\][x]) // 将元素记录在数组的第x行和第y列
console.log(out\[10\][12]) // 记录输出数组第10行和第12列的元素
运行GPU基准测试
你可以按照GitHub上指定的步骤运行基准测试。
npm install @gpujs/benchmark
const benchmark = require('@gpujs/benchmark')
const benchmarks = benchmark.benchmark(options);
options
对象包含可以传递给基准的各种配置。结束
作者:Solomon Eseme
粉丝福利
136期留言+在看幸运用户:暂无。
临走前留下,今天的福利
福利1:《JavaScript高级与设计模式》获取资源请在公众号对话框中回复关键字:042,如果没有关注请扫下面的二维码 福利2:在看+留言,我随机抽取一位认真留言的小伙伴,给他发一个5~10不等的红包奖励
更多好文
初学者的技术写作:技术博客基础知识A-Z指南 create-react-app 4.0.0的新功能 压箱底笔记:Promise和Async/await的理解和使用 Fetch API速查表:9个最常见的API请求 什么是AVIF?如何在你的网站上使用AV1图像格式 将HTML表格转换成精美的PDF的几种方案比较 思维训练:如何设计一个JavaScript插件系统? 如何创建与框架无关的JavaScript插件 听说你熟练使用Vue.js,这9种Vue技术你掌握了吗?
- END -
点赞 + 在看 + 留言,下一个幸运儿就是你!
走心的分享更容易被抽中~
开奖时间 下期文末